package com.desksoft.ecommerce.service.interf.mall;

import java.util.List;
import java.util.Map;

import com.desksoft.ecommerce.entity.logistics.dto.Vipcard;
import com.desksoft.ecommerce.entity.logistics.dto.Vipcardext;
import com.desksoft.ecommerce.entity.mall.dto.AllPurposeExtend;
import com.desksoft.ecommerce.entity.mall.dto.Vipcheckstatus;
import com.desksoft.ecommerce.util.result.ServiceResult;
import com.desksoft.ecommerce.vo.logistics.PublicinfoVO;
import com.desksoft.ecommerce.vo.logistics.VipPointListVO;
import com.desksoft.ecommerce.vo.mall.BookingVO;
import com.desksoft.ecommerce.vo.mall.BrandVO;
import com.desksoft.ecommerce.vo.mall.CategoryVO;
import com.desksoft.ecommerce.vo.mall.ClientInfoQryVO;
import com.desksoft.ecommerce.vo.mall.ClientInfoVO;
import com.desksoft.ecommerce.vo.mall.DeliverInfoVO;
import com.desksoft.ecommerce.vo.mall.DemandHVO;
import com.desksoft.ecommerce.vo.mall.DemanddVO;
import com.desksoft.ecommerce.vo.mall.DistLogVO;
import com.desksoft.ecommerce.vo.mall.FavoriteVO;
import com.desksoft.ecommerce.vo.mall.MallFieldsVO;
import com.desksoft.ecommerce.vo.mall.MallMessageVO;
import com.desksoft.ecommerce.vo.mall.MallSessionUserVO;
import com.desksoft.ecommerce.vo.mall.MallUserInfoVO;
import com.desksoft.ecommerce.vo.mall.PurchasedVO;
import com.desksoft.ecommerce.vo.mall.RegisterVO;
import com.desksoft.ecommerce.vo.mall.RenderDateVO;
import com.desksoft.ecommerce.vo.mall.SalepromlistVO;
import com.desksoft.ecommerce.vo.mall.ValidationVO;
import com.desksoft.ecommerce.vo.mall.VipCardVO;
import com.desksoft.ecommerce.vo.mall.WholesalePriceVO;
import com.desksoft.ecommerce.vo.vendor.AreaZoneVO;
import com.desksoft.utility.pagination.Page;
import com.desksoft.utility.service.ServiceInterface;

/** 
 * 处理收获地址公共方法
 * 
 * @param
 * @param
 * @return
 */
public interface IAccountService extends ServiceInterface {

	/**
	 * 获取收获地址
	 * 
	 * @param DeliverInfoVO
	 * @param zoneVO
	 * @return
	 */
	public ServiceResult<List<DeliverInfoVO>> getAddressItem(
			DeliverInfoVO deliverInfoVO);

	/**
	 * 新增收获地址
	 * 
	 * @param DeliverInfoVO
	 * @param
	 * @return
	 */
	public ServiceResult<MallMessageVO> saveAddressItem(
			DeliverInfoVO deliverInfoVO);

	/**
	 * 修改收获地址
	 * 
	 * @param DeliverInfoVO
	 * @param zoneVO
	 * @return
	 */

	public ServiceResult<MallMessageVO> updateAddressItem(
			DeliverInfoVO deliverInfoVO);

	/**
	 * 删除收获地址
	 * 
	 * @param DeliverInfoVO
	 * @param zoneVO
	 * @return
	 */

	public ServiceResult<MallMessageVO> deleteAddressItem(
			DeliverInfoVO deliverInfoVO);

	/**
	 * 商城登录
	 * 
	 * @param clientInfoVO
	 * @return
	 * @throws Exception
	 */
	public ServiceResult<MallSessionUserVO> mallLogin(ClientInfoVO clientInfoVO)
			throws Exception;
	
	/**
	 * 注册表单渲染
	 * 
	 * @param malllFiledsVO
	 * @return
	 */
	public ServiceResult<RenderDateVO> mallRegRender(MallFieldsVO malllFiledsVO);
	
	/**
	 * 用户注册
	 * 
	 * @param registerVO
	 * @return
	 */
	public ServiceResult<MallSessionUserVO> mallRegister(RegisterVO registerVO);
	

	/**
	 * 已采购商品列表
	 * 
	 * @param purchasedVO
	 * @return
	 */
	public ServiceResult <PurchasedVO>  getPurchasedInfo(PurchasedVO   purchasedVO);
	
	/**
	 * 已采购和已关注的数量
	 * 
	 * @param purchasedVO
	 * @return
	 */
	public ServiceResult <Long>  getPurchasedInfoCount(PurchasedVO   purchasedVO);
	
	/**
	 * (已采购和已关注)获取小类以及对应的数量
	 * 
	 * @param favoriteVO
	 * @return
	 */
	public ServiceResult <List<FavoriteVO>>  getfavoriteList  (FavoriteVO  favoriteVO);
	/**
	 * 已关注商品列表
	 * 
	 * @param purchasedVO
	 * @return
	 */
	public ServiceResult <PurchasedVO>  getAttentionInfo(PurchasedVO   purchasedVO);
	
	/**
	 * (预采购)获取小类以及对应的数量
	 * 
	 * @param favorieVO
	 * @return
	 */
	public ServiceResult <List<FavoriteVO>>  getFavoriteList  (FavoriteVO   favoriteVO);
	
	/**
	 * 预采购商品列表
	 * 
	 * @param purchasedVO
	 * @return
	 */
	public ServiceResult <PurchasedVO>  getPurCatalogInfo(PurchasedVO  purchasedVO);
	
	/**
	 * 预采购商品数量
	 * 
	 * @param purchasedVO
	 * @return
	 */
	public ServiceResult <Long>  getPurCatalogInfoCount(PurchasedVO  purchasedVO);
	
	public List<Map<String, List<Map<String, String>>>> getAreaCode();
	
	/**
	 * 获得初始密码_B2B
	 * 
	 * @param clientInfoVO
	 * @return
	 */
	public ServiceResult<ClientInfoVO> getPwd(ClientInfoVO clientInfoVO);
	
	/**
	 * 修改密码_B2B
	 * 
	 * @param clientInfoVO
	 * @return
	 */
	public ServiceResult<ClientInfoVO> updatePwd(ClientInfoVO clientInfoVO);
	
	/**
	 * 我的订单
	 * */
   public ServiceResult<List<DemandHVO>> getMyOrderList(DemandHVO demandHVO);
   /**
	 * 我的订单总记录数
	 * */
   public ServiceResult<Long> getMyOrderTotal(DemandHVO demandHVO);
   
   /*
    * 查询订单跟踪信息
    * **/
   public ServiceResult<List<DistLogVO>> getOrderTrackInfo(DistLogVO distLogVO);

   /**
    * 获取订单详情
    * */
   public ServiceResult<List<DemanddVO>> getOrderDetail(DemandHVO demandHVO);
   
   /**
    * 获取分类
    * */
   public ServiceResult<List<CategoryVO>> getclassification(CategoryVO categoryVO);
   
   
   /**
    * 获取品牌
    * */
   public ServiceResult<List<BrandVO>> getbrand(BrandVO brandVO);
   /**
    * 获取赠品
    * **/
   public ServiceResult<Map<String, List<SalepromlistVO>>> getGiftInfo(SalepromlistVO salepromlistVO);
   
   /***
    * 判断商品是否下架已经缺货登记
    * */
   public ServiceResult<Map<String, String>> isOutofStock(WholesalePriceVO wholesalePriceVO);
   /**
    * B2C登录
    * **/
   public ServiceResult<VipCardVO> mallB2CLogin(VipCardVO vipCardVO)throws Exception;
   /**
    * B2C注册
    * **/
   public ServiceResult<MallUserInfoVO> mallB2CRegister(VipCardVO vipCardVO);
   /**
    * 申请激活、验证
    * **/
   public ServiceResult<String> applyValidationCode (ValidationVO validationVO);
   /**
    * 找回密码
    * */
   public  ServiceResult<String> findPassword (ValidationVO validationVO);
   /**
    * 校验激活、验证
    * **/
   public ServiceResult<String> activeValidationCode (ValidationVO validationVO);
   /**
    * 修改密码
    * */
   public ServiceResult<Boolean> updateVipCardPwd(Vipcard vipcard);
   /**
    * Vipcart(会员信息) 
    * */
   public ServiceResult<VipCardVO> getVipCardMaterial(VipCardVO vipCardVO); 
   
   /**
    * 账户信息列表数量
    * */
   public ServiceResult<Long> getAccountlistSL(VipPointListVO vipCardVO);
   
    
   /**
    * 账户信息列表
    * */
   public ServiceResult<List<VipPointListVO>> getAccountlist(VipPointListVO vipCardVO);
   
   
   /**
    * 一个月内过期积分
    * */
   public ServiceResult<List<VipPointListVO>> getExpiredintegral(VipPointListVO vipCardVO);
   /**
	* 将DeliverInfo表中对应infoid的记录设成该会员的默认地址，并且将该会员原来的默认地址设置成非默认地址
	*/
   public ServiceResult<Boolean> setAddrDefault(String infoid, List addrList, String cardNo);
   
   public ServiceResult<List<DeliverInfoVO>> getAddrByInfoid(String infoid);
   
   public ServiceResult<Boolean> setAddrAllNotDefault(String cardNo);

   public ServiceResult<Vipcard> getPwd_B2C(Vipcard vipCard);
   
   public ServiceResult<String> vailUserInfo(Vipcard vipCard);
   
   public ServiceResult<Vipcard> getVipCardInfo(Vipcard vipcard);
   
   public ServiceResult<Boolean>  isValiEmail(Vipcheckstatus vipcheckstatus);
   
   public ServiceResult<Boolean> updateRegUserInfo(Vipcard vipcard);

   
   public ServiceResult<VipCardVO> getVipCardAll(VipCardVO vipcard);
   
   public ServiceResult<List<AllPurposeExtend>> getAllPurList(AllPurposeExtend allPurposeExtend);
   
   public ServiceResult<Boolean> updateVipCardDate(VipCardVO vipCardVO);


   /**
    * 获取支付密码
    * @param vipcardext
    * @return
    */
   public ServiceResult<Vipcardext> getPassword_pay(Vipcardext vipcardext);

   /**
    * 修改支付密码
    * @param vipcardext
    * @return
    */
   public ServiceResult<Boolean> updateVipCardExtPwd(Vipcardext vipcardext);
   
   /**
	 * 获取发票类型
	 * 
	 * @return
	 */
	public ServiceResult<List<PublicinfoVO>> getInvoiceType();
	/**
	 * 得到地区父关系
	 * @param zoneCode
	 * @return
	 */
	public ServiceResult<String> getZoneFather(String zoneCode);
	
	/**
	 * 获取要退货的商品
	 * @param demandHVO
	 * @return
	 */
	public ServiceResult<List<DemanddVO>> getReturnOrderList(DemandHVO demandHVO);
	/**
	 * 获取用户头像
	 * @param demandHVO
	 * @return
	 */
	public ServiceResult<AllPurposeExtend> getPersonIcon(AllPurposeExtend allPurposeExtend);
	/**
	 * 修改用户头像
	 * @param demandHVO
	 * @return
	 */
	public ServiceResult<Boolean> updatePersonIcon(AllPurposeExtend allPurposeExtend);
	
	/**
	 * 获取预定记录分页列表
	 * @param quoteRecordQryVO
	 * @return
	 */
	
	public ServiceResult<Page<BookingVO>> selectBookingPage(BookingVO bookingVO);
	
	/**
	 * 改变预定记录状态
	 * @param quoteRecordQryVO
	 * @return
	 */
	public ServiceResult<Boolean> updateStatus(BookingVO bookingVO);
	
	/**
	 * 我的关注的促销商品 
	 * @param FavoriteVO
	 * @return
	 */
	public ServiceResult<Integer> selectFavoriteP(FavoriteVO favoriteVO);
	
	/**
	 *  未评价的已购商品
	 * @param 
	 * @return
	 */
	
	public ServiceResult<Integer> selectFavoriteE(FavoriteVO favoriteVO);
	
	public ServiceResult<Boolean> updateVipCardExt(Vipcardext vipcardext);
	/**
	 * 获取默认收件地址
	 * @param deliverInfoVO
	 * @return
	 */
	public ServiceResult<Boolean> getDefaultAddress(String clientcode);
	/**
	 * 更新账户信息
	 * @param clientInfoVO
	 * @return
	 */
	public ServiceResult<Boolean> updateClientInfoData(ClientInfoVO clientInfoVO);
	
	
	/**
	 * 获取用户头像
	 */
	public ServiceResult<ClientInfoVO> selectPersonImage(ClientInfoQryVO infoQryVO);
	
	/**
	 * 获取B2C用户头像
	 * @param infoQryVO
	 * @return
	 */
	public ServiceResult<ClientInfoVO> selectPersonB2CImage(ClientInfoQryVO infoQryVO);
	
	
	/**
	 * 经销商名录IP定位
	 * @param zoneVO
	 * @return
	 */
	public ServiceResult<AreaZoneVO> selectZoneByShortName(AreaZoneVO zoneVO);
	
	/**
	 * 查询预订单信息
	 * @param demanddVO
	 * @return
	 */
	public ServiceResult<List<DemanddVO>> selectDemandReserveItemDetail(DemanddVO demanddVO);
	
}
